package tothreedesignmodel.prototype;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

/**
 * 原型模式 *
 * 原型模式用的比较少，用于创建重复对象。需要实现Cloneable 可以选择重写clone()方法。
 * clone分为浅克隆和深克隆。浅克隆只是克隆引用，对象还是一个。深克隆是对象也新创建了一个
 *
 * @Author lzhphantom
 * @Description
 * @Date 创建于 15:58 2020/7/16
 * @Modified
 */
@Data
@AllArgsConstructor
public class User implements Cloneable {
    private String name;
    private int age;

    @Override
    protected User clone() throws CloneNotSupportedException {
        return (User) super.clone();
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        User user = new User("test", 25);
        User user1 =user.clone();
        user.setAge(18);
        System.out.println(user1.hashCode());
        System.out.println(user.hashCode());
    }

}
